/*
 * redmicro all Copyright (c)
 */

/**
 * Created by seeker910 on 14-3-17.
 */

Rsd.define('Rsd.Faith.stores.ServicesStore', {
    extend: 'Rsd.data.Store',
    requires:['Rsd.data.Service'],
    xtype: 'servicesStore',
    proxy: {
        url:'resources/storages/serviceslist.js',
        method:'get',
        async:false
    },
    /*
    * */

    /*
    * */
    constructor: function (config) {
        config = config || {};
        Rsd.apply(this, config);
        var me = this;
    },
    /*
    *
    */
    load: function load (args,callback) {
            var me = this;

            me.callParent(args,function(data)
            {
                var _data = {success:true,msg:'',data:{total:0,pagecount:1,pageindex:0,pagesize:1000,modeltype:'',rows:[]}};
                for(var i in data)
                {
                    var item = data[ i]
                    var _map = {};
                    for(var j in item.services)
                    {
                        _map[item.services[j].name.toLowerCase()] = item.services[j];
                    }
                    Rsd.requestJson({async:false,url:item.serverUrl + '/GetDes'},function(__data)
                    {
                        for(var j in __data.data)
                        {
                            var _c = _map[__data.data[j].name.toLowerCase()] ||{};
                            var _s = Rsd.apply(__data.data[j],{
                                    key:item.group.toLowerCase() + '.' + __data.data[j].name.toLowerCase(),
                                    group:item.group,
                                    parent : me,
                                    errorHandler :_c.errorHandler || item.errorHandler,
                                    failureHandler : _c.failureHandler || item.failureHandler,
                                    successHandler: _c.successHandler || item.successHandler,
                                    local:{method:'get',url:item.localUrl},
                                    server:{
                                        url:item.serverUrl + '/' +__data.data[j].name,
                                        method:_c.method || 'POST',
                                        //contentType:'application/json',
                                        //dataType: 'json',
                                        async:true
                                  }
                            });

                            _data.data.total++;
                            _data.data.rows.push(_s);
                            Rsd.app.addService( _s.key,_s);
                        }
                    });
                }

                Rsd.callFunction(me, callback, [_data]);
            });
        },
    /*
    * */
    getService:function  getService(name)
    {
          return Rsd.app.services[name];
    },
    /*
    * */
    test:function test(name,args){
        Rsd.app.services[name].test(args);
    },
    /*
    * */
    testAll:function testAll()
    {
        for(var item in this.data)
        {
            Rsd.app.services[item.name].test();
        }
    },
    /*
    * */
    errorHandler: function errorHandler(data){

        Rsd.debug("Rsd.Faith.stores.ServicesStore.errorHandler()");
        if(!data)
        {
            return true;
        }

        if(data.data && data.data.returnUrl)
        {
            //阻塞进程 提示
            Rsd.alert('操作失败：'+ data.msg,function(){
                window.location.href=data.data.returnUrl;
            });

            return false;
        }
        if(data.data && data.data.errorCode == '0000' && Rsd.app.indexUrl) {
            //阻塞进程 提示
            Rsd.alert('操作失败：'+ data.msg,function(){
                window.location.href=Rsd.app.indexUrl;
            });

            return false;
        }
        return true;
    },
    /*
    * */
    failureHandler:function failureHandler(data)
    {
        Rsd.debug("Rsd.Faith.stores.ServicesStore.failureHandler()");
        if(!data)
        {
            return true;
        }

        // debugger;
        if(data.data && data.data.returnUrl)
        {
            //阻塞进程 提示
            Rsd.alert('操作失败：'+ data.msg,function(){
                window.location.href=data.data.returnUrl;
            });

            return false;
        }
        if(data.data && data.data.errorCode == '0000' && Rsd.app.indexUrl) {
            //阻塞进程 提示
            Rsd.alert('操作失败：'+ data.msg,function(){
                window.location.href=Rsd.app.indexUrl;
            });

            return false;
        }
        Rsd.alert('操作失败：'+ data.msg||'未知错误。');
        return true;
    },
    /*
    * */
    alertHandler:function(data)
    {
        if(data.msg) {
            Rsd.alert(data.msg);
        }
        return true;
    },
    logHandler:function(data)
    {
        Rsd.log(data);
        return true;
    },
    /*
     * */
    deleteSuccess:function deleteSuccess(response){
        Rsd.debug("Rsd.Faith.stores.ServicesStore.deleteSuccess()");
        var _data = Rsd.toJson(response) ;
        if (_data != null) {
            if (_data.success) {
                Rsd.popup('数据删除成功！',300,500);
            } else {
                Rsd.alert('数据删除失败：\r\n{' + _data.msg + "}");
            }
        }
        return true;
    },
    /*
     * */
    saveSuccess:function saveSuccess(response)
    {
        Rsd.debug(response);
        var _data = response ;
        if (_data != null) {
            if (_data.success) {
                Rsd.popup('保存成功！',300,500);
            } else {
                Rsd.alert('数据保存失败：\r\n{' + _data.msg + "}");
                return false;
            }
        }
        return true;
    },
    /*
    *
    * */
    loginHandler:function loginHandler(response)
    {
        Rsd.debug("Rsd.Faith.stores.ServicesStore.loginHandler()");
        Rsd.debug(response);
        var me = this;

        var _login = Rsd.create('Rsd.Faith.views.LoginPage', { success:me.showMainHandler});
        _login.showDialog(null,null,null,1000);
        return true;//false:后续方法不在执行
    },
    /*
    *
    * */
    showMainHandler:function showMainHandler(response)
    {
        Rsd.debug("Rsd.Faith.stores.ServicesStore.showMainHandler()");
        Rsd.debug(response);
        var _data = Rsd.toJson(response) ;
        Rsd.addCookie("token", _data.data.token);
        Rsd.setAppToken( _data.data.token);
        Rsd.app.userName =  _data.data.XingMing||'';
        var _form = Rsd.create('Rsd.Faith.views.MainForm', {
            border: false
        });

        Rsd.app.MainForm =_form;

        _form.show(1000).load();
        return true;//false:后续方法不在执行
    }
});
